# @Time :  
# @Author : Fioman 
# @Phone : 13149920693
"""
cv2.imshow(winname,mat):
功能: 在指定窗口中显示Opencv图像,窗口自适应图像大小
显示图像的缩放和图像的深度有关系,如果在显示图像的时候窗口没有创建,
会自动创建一个窗口,使用cv2.WINDOW_AUTOSIZE
窗口显示之后需要嗲用cv2.waitKey(millionSeconds)这个函数决定图像显示的时间,单位是毫秒,
如果值为0,表示一直显示,直到某个按键被按下

def namedWindow(winname, flags=None):
功能: 创建一个窗口,可以用名称来占位,以便和其他的窗口名称区分开来.如果这个名字的窗口已经存在,
那么这个函数将什么也不做.
winname: 窗口名称(字符串)
flags: 可选参数,窗口的显示方式,默认是自动窗口大小,保持比例.
- WINDOW_NORMAL 或者是 WINDOW_GUI_NORMAL 窗口大小可以改变.
   怎么理解窗口大小可以改变,就是显示图像之后的那个窗口可以改变大小.可以用鼠标拉伸缩放,或者是使用cv2.resize()改变窗口大小.
- WINDOW_AUTOSIZE: 自动调整窗口大小以适应图像,所以这里不能手动更改窗口大小.
- WINDOW_FREERATIO: 调整图像不考虑它的原始比例
- WINDOW_KEEPRATIO: 调整图像考虑它的原始比例
- WINDOW_GUI_NORMAL: 是过去的旧方法绘制窗口
- WINDOW_GUI_EXPANDED: 是一种新的增强的GUI绘制方法
- 默认值: flags = WINDOW_AUTOSIZE | WINDOW_KEEPRATIO | WINDOW_GUI_EXPENDED
"""
import os.path

import cv2
import numpy as np

import settings

imagePath = os.path.join(settings.IMAGE_PATH, "中文目录", "lena.jpg")
imageColor = cv2.imdecode(np.fromfile(imagePath, np.uint8), cv2.IMREAD_COLOR)

cv2.namedWindow("WindowNormal", cv2.WINDOW_NORMAL)
cv2.resizeWindow("WindowNormal", 400, 300)
cv2.imshow("WindowNormal", imageColor)
cv2.waitKey(0)

cv2.namedWindow("WindowAutoSize", cv2.WINDOW_AUTOSIZE)
cv2.resizeWindow("WindowAutoSize", 400, 300)  # 虽然不报错,但是没有效果
cv2.imshow("WindowAutoSize", imageColor)
cv2.waitKey(0)

cv2.namedWindow("DefaultWindow")
cv2.imshow("DefaultWindow", imageColor)
cv2.waitKey(0)
